1. Field of the Invention
The present invention relates to a semiconductor device including a programmable logic device which can change a configuration of hardware.
2. Description of the Related Art
Smaller and lighter mobile information terminals such as PDAs and smartphones are highly required by users; thus, the scale of hardware that can be built in the limited space in a housing is limited. However, the mobile information terminals are required to have a number of functions, for example, functions of playing moving images, supporting online games, recognizing voice, and capturing images using a miniature camera, so that a plurality of application programs (hereinafter, referred to as applications) needs to be executed using the hardware. The larger the number of applications to be executed is and the smaller the scale of the hardware is, the smaller the storage area which can be secured in a buffer storage device is. This causes the data transfer speed to be a bottleneck; thus, it becomes difficult to reduce the time required to execute a thread and execute an application.
In view of the above, a technique in which a programmable logic device (PLD) is used as part of hardware and some of a plurality of threads executed in an application are executed by hardware in the PLD has been devised as one solution. In a PLD, functions of logic elements (basic blocks) with adequate scale and a connection structure between the logic elements can be changed after manufacture to configure a desired logic circuit. With such a technique, the number of threads executed in an application can be reduced and the execution speed of an application can be increased even when the scale of hardware is limited.
Patent Document 1 below discloses an information processing system in which processing time is reduced in such a manner that a plurality of hardware modules performing the same processing is stored in a storage unit and a hardware module that fits a region where a programmable logic circuit can be configured is preferentially used when data is partly rewritten.